#pragma once

/**
 * GenerateHeightMap - collection of algorithms for height map generation
 *
 * Written by: Elias Tolokonnikov
 * Date: May, 2014
 */

#include "HSModelAPI.h"

class HeightMap;

/**
* DiamondSquareGenerateHeightMap - generate height map using Diamond-Square fractal algorithm
* @param[out]    o_height_map          Empty height map. Should be square map with side length equal to 2^n + 1
* @param[in]     i_plains_percentage   Relative percentage of a plains; defines "roughness" of a landscape
* @param[in]     i_max_height          Scaling coefficient; absolute value of maximum height/depth of the surface 
*                                      is guaranteed not to exceed this value (but not guaranteed to be equal to this value)
*/
HSMODEL_API void GeneratedHeightMapWithDiamondSquare(HeightMap& o_heightmap, double i_plains_percentage, double i_max_height);